/*
 * @(#)Builder.java	1.0 2000/12/19
 *
 * Copyright 2000 Thomas Barnekow. All Rights Reserved.
 *
 * This software is the proprietary information of Thomas Barnekow.
 * Use is subject to license terms.
 */

package tb.provider.jdbc;

import tb.provider.*;

/**
 * This interface is part of an implementation of the "Builder" design pattern.
 * In generall, Builder instances are used by a {@link Director} in order to
 * "build" complex objects. In this case, the builder gets database meta-objects
 * in order to build a resulting {@link MetaObject}.
 *
 * @author Thomas Barnekow
 * @version 1.0
 */
public interface Builder {

  public void takeDatabase(Database database) throws Exception;
  public void takeSchema(Schema schema) throws Exception;
  public void takeTable(Table table) throws Exception;
  public void takeColumn(Column column) throws Exception;

  /**
   * Contract: builders can be reused after this operation has been called.
   * As a consequence, this operation can be called only once after the result
   * has been built. Following calls would return different, usually "empty",
   * results.
   */
  public MetaObject getResult();
}